package com.blacktea.creationalpatterns.singletonpattern;

import org.springframework.stereotype.Component;

/**
 * @description: 静态内部类实现
 * @author: black tea
 * @date: 2023/3/19 16:40
 *
 * 在这个示例中，使用@Component注解标记了MySingleton类，以便Spring框架能够将该类识别为一个可注入的bean。
 * 静态内部类SingletonHolder包含了一个静态实例变量INSTANCE，该变量在类加载时被初始化，且只会被初始化一次。由于静态内部类的加载是线程安全的，因此可以保证在多线程环境下，只有一个实例被创建。
 * 在getInstance()方法中，直接返回SingletonHolder.INSTANCE变量，这样就可以获取到该类的实例。
 */
@Component
public class MySingleton3 {

    private MySingleton3() {}

    private static class SingletonHolder {
        private static final MySingleton3 INSTANCE = new MySingleton3();
    }

    public static MySingleton3 getInstance() {
        return SingletonHolder.INSTANCE;
    }
}
